package dletc.thread;
/**
	六、如何创建多线程：
	  
	  方法一：Thread其实是静态Proxy类 对Runnable进行代理
	  第一步：创建一个自定义的线程类，让这个类继承Thread
	  第二步：重写run(){}方法
	  第三步：创建线程对象
	  第四步：开启线程调用start();
	多线程的特点：
		  有先有后
		  有快有慢
		  有多有少
		  相互抢夺资源 （抢到cpu中时间片的时长）
*/
public class Demo01{

	public static void main(String[] args) {
		
		//模拟多线程并发的状态，同一时间执行两个for循环，查看结果分析执行顺序？
		//3 创建线程对象
		MyThread mt = new MyThread();
		
		//4 开启线程
		
		/**
		 *  start():开启分支线程
		 *  执行步骤：
		 *    1 在JVM中开辟一个新的栈空间
		 *    2 start()代码使命结束，消失
		 *    3 启动分支线程
		 *    4 自动调用分支线程里的run()方法，并且run方法在分支栈的栈底部 ，执行里面的操作
		 */
		//开启线程
		mt.start();
		
		//mt.run() 若直接调用run方法 并不是多线程，而是在主线程中调用了run方法而已，start方法是开辟了一个新的分支栈。
		
		
		//4 在主方法里执行的方法，叫主线程
		for (int i = 1; i <= 100; i++) {
			System.out.println("主线程" + "-----------" + i);
		}

	}

}

//1.创建一个自定义的线程类，让这个类继承Thread
class MyThread extends Thread{
	@Override
	public void run() {
		for (int i = 1; i <= 100; i++) {
			System.out.println("分支线程" + "-----------" + i);
		}
	}
}
